home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
vol_200
/
235_01
/
ovfdisp.c
< prev
next >
Wrap
Text File
|
1987-06-16
|
9KB
|
270 lines
/* 025 17-Jan-87 ovfdisp.c
Copyright (c) 1987 by Blue Sky Software. All rights reserved.
*/
#include "ov.h"
#define V_bar (0xba)
#define H_bar (0xcd)
#define INFO_COLS (60) /* extra file info uses 60 xtra cols */
extern FILE_ENT files[];
extern struct window cw; /* the current widow structure */
unsigned char help_display; /* NZ if help is active */
char *mmddyy();
unsigned long alloc_siz(unsigned long, unsigned int);
/******************************************************************************
** S E T U P _ F I L E _ S C R **
*****************************************************************************/
setup_file_scr() { /* setup the static file display screen image */
clr_scr(); /* start off with clear screen */
setvattrib(DIS_TEXT);
disp_str_at("\xc9\xcd Volume \xcd\xcd\xcb\xcd Path ",VOL_ROW-1,0);
disp_rep(H_bar,SCREEN_COLS-21);
disp_char_at(0xbb,VOL_ROW-1,SCREEN_COLS-1);
disp_char_at(V_bar,VOL_ROW,0);
disp_char_at(V_bar,VOL_ROW,PATH_COL-1);
disp_char_at(V_bar,VOL_ROW,SCREEN_COLS-1);
disp_char_at(V_bar,VOL_ROW+1,0);
disp_rep(' ',PATH_COL-2);
disp_char_at(0xc8,VOL_ROW+1,PATH_COL-1);
disp_rep(H_bar,SCREEN_COLS-14);
disp_str_at("\xcb\xcd Files ",VOL_ROW+1,19);
disp_char_at(0xb9,VOL_ROW+1,SCREEN_COLS-1);
disp_str_at("\xcb\xcd Selection ",VOL_ROW+1,61);
disp_str_at("\xba TOTAL \xba SELECTED: FILES BYTES \xba MASK:",
FILE_STAT_ROW,0);
disp_char_at(V_bar,FILE_STAT_ROW,SCREEN_COLS-1);
disp_str_at("\xba FREE \xba TAGGED: FILES BYTES \xba ATRS:",
TAG_STAT_ROW,0);
disp_char_at(V_bar,TAG_STAT_ROW,SCREEN_COLS-1);
disp_char_at(0xc8,UP_BOUND,0);
disp_rep(H_bar,SCREEN_COLS-2);
disp_char_at(0xca,UP_BOUND,19);
disp_char_at(0xca,UP_BOUND,61);
disp_char_at(0xbc,UP_BOUND,SCREEN_COLS-1);
disp_status(); /* display the status line - resets vid attrib */
}
/******************************************************************************
** D I S P _ F I L E **
*****************************************************************************/
#pragma check_stack-
int ALTCALL
disp_file(fp,is_cur) /* display one file name with approiate video attrib */
register struct file_ent *fp;
int is_cur;
{
register int fast;
int fillsiz, i, is_pm, fnlen, va;
/* set the video attribute to use */
va = is_cur ? DIS_HIGH : (fp->flags & TAGGED ? DIS_TAGD : DIS_NORM);
if (va != DIS_NORM)
setvattrib(va);
if (fnlen = strlen(fp->name)) {
disp_str(fp->flags & TAGGED ? "\x1A " : " "); /* tagged flag gets -> */
disp_str(fp->name); /* display the name */
if (fp->flags & DIR) { /* \ after dir names */
disp_char('\\');
fnlen++;
}
}
disp_rep(' ',cw.maxlen - fnlen); /* blank fill the name field */
/* display extended file info if active */
if (cw.info_display && fnlen) {
out_long(fp->size,10,' '); /* display used/allocated sizes */
out_long(alloc_siz(fp->size,cw.drivep->clustersiz),11,' ');
disp_str(" "); /* 3 blanks before date */
disp_str(mmddyy(fp->date));
disp_str(" "); /* 3 blanks before time */
i = ((fast = fp->time) & 0xF800) >> 11; /* i = hours */
if (is_pm = (i > 12)) /* is it AM or PM? */
i -= 12;
out_int(i,2,' '); /* out go the hours */
disp_char(':');
out_int((fast & 0x07E0) >> 5,2,'0'); /* now the minutes */
disp_char(':');
out_int((fast & 0x1F) << 1,2,'0'); /* seconds */
disp_str(is_pm ? " pm " : " am ");
disp_attrib(fp->flags); /* display the R H S A attributes */
disp_str(fp->flags & DIR ? " DIR" : " "); /* do the DIR attrib */
fillsiz = cw.colsiz - cw.maxlen - INFO_COLS - 2;
} else /* no extended file info display */
fillsiz = cw.colsiz - cw.maxlen - 2;
disp_rep(' ',fillsiz); /* blank fill the column */
if (va != DIS_NORM) /* restore video attrib if not normal */
setvattrib(DIS_NORM);
}
#pragma check_stack+
/******************************************************************************
** D I S P _ A T T R I B **
*****************************************************************************/
#pragma check_stack-
disp_attrib(attribs) /* display the attributes in R H S A format */
register int attribs;
{
static char *no_at = " .";
disp_str(attribs & RDONLY ? " R" : no_at);
disp_str(attribs & HIDDEN ? " H" : no_at);
disp_str(attribs & SYSTEM ? " S" : no_at);
disp_str(attribs & ARCHIVE ? " A" : no_at);
}
#pragma check_stack+
/******************************************************************************
** D I S P _ V O L _ S T A T S **
*****************************************************************************/
int ALTCALL
disp_vol_stats() {
gotorc(FILE_STAT_ROW,VOL_STAT_COL);
out_long(cw.drivep->vol_size,10,' ');
gotorc(TAG_STAT_ROW,VOL_STAT_COL);
out_long(cw.drivep->vol_free,10,' ');
}
/******************************************************************************
** D I S P _ F I L E _ S T A T S **
*****************************************************************************/
int ALTCALL
disp_file_stats() {
gotorc(FILE_STAT_ROW,NUM_FILES_COL);
out_int(cw.num_files,5,' ');
gotorc(FILE_STAT_ROW,SPACE_USED_COL);
out_long(cw.files_size,10,' ');
gotorc(TAG_STAT_ROW,NUM_FILES_COL);
out_int(cw.num_tagged,5,' ');
gotorc(TAG_STAT_ROW,SPACE_USED_COL);
out_long(cw.tag_size,10,' ');
}
/*****************************************************************************
D I S P _ P A T H
*****************************************************************************/
disp_path(idx) /* display a files dir path - only used in showall */
int idx;
{
gotorc(VOL_ROW,PATH_COL+1); /* display the files pathname */
out_str(files[idx].dirp,65,' ');
}
/******************************************************************************
D I S P _ S T A T U S
*****************************************************************************/
disp_status() { /* display the status line */
setvattrib(DIS_HEAD);
disp_rep_at(' ',SCREEN_COLS,STATUS_ROW,0);
if (!help_display)
disp_str_at(" Press F1 for Help ",STATUS_ROW,SCREEN_COLS/2-10);
setvattrib(DIS_NORM);
}
/******************************************************************************
D I S P / C L R _ M S G
*****************************************************************************/
#define MSGLEN 25
disp_msg(cnt,m1) /* display msg strings on the status line */
int cnt;
char *m1;
{
int len = 0;
register char **mp;
gotorc(STATUS_ROW,0);
setvattrib(DIS_HEAD);
mp = &m1; /* display cnt msg strings */
for ( ; cnt; cnt--, mp++) {
disp_str(*mp);
len += strlen(*mp);
}
if (len < MSGLEN) /* blank fill msg field */
disp_rep(' ',MSGLEN-len);
setvattrib(DIS_NORM);
}
clr_msg() { /* clear msg field on status line */
gotorc(STATUS_ROW,0);
setvattrib(DIS_HEAD);
disp_rep(' ',MSGLEN);
setvattrib(DIS_NORM);
}
/******************************************************************************
** C E N T E R _ T E X T **
**************************